1. Field of the Present Invention
The present invention generally relates to field of data processing systems and more particularly to a data processing system employing a hidden partition in its disk storage to store code such as BIOS extension files.
2. History of Related Art
In the field of microprocessor-based data processing systems, one or more processors typically communicate with a system memory via a proprietary and implementation specific system bus. A bridge typically provides an interface between the system bus and at least one I/O bus (also referred to as a peripheral bus). The I/O bus is typically compliant with an industry standard I/O bus protocol such as the widely implemented Peripheral Components Interface (PCI) bus. The PCI bus enables a wide variety of peripheral devices to communicate with the system""s processor(s) and system memory. Devices that may be attached to a PCI bus in a typical data processing system include, as examples, hard disk controllers, graphic adapters, and network interface cards.
Manufacturers of peripheral device adapter cards may wish to include BIOS extensions with their cards to provide expanded functionality to the user. BIOS (Basic I/O System) refers to firmware that is executed immediately following system power-on to enable system control of various I/O devices including the keyboard, display screen, disk drives, serial communications, and so forth. The BIOS code also typically performs an Initial Program Load (IPL) that copies operating system code (or portions thereof) from a system disk or other peripheral device to system memory. As its name implies, a BIOS extension enables an adapter manufacturer to define device specific code that is invoked via the system BIOS typically after the execution of a power on self test (POST) and before the IPL.
PCI (and other bus type) adapters allow for the inclusion of an Option ROM, physically located on the adapter, that contains the adapter""s BIOS extension code. BIOS extension code is executable code in a binary format (i.e., native machine code). For purposes of this disclosure, an adapter""s BIOS extension code may be referred to as the adapter""s BIOS extension file. In some cases, the PCI adapters come standard with the Option ROM and in other cases, an Option ROM socket is provided, but not populated. The Option ROM and its corresponding socket, unfortunately, add to the cost of the adapter card. Moreover, the BIOS extension code stored in an Option ROM may have defects (bugs) requiring an update. Updating the contents of an Option ROM is usually a crude process that typically includes executing an adapter-specific proprietary update program that generally runs under a real mode operating system such as DOS and in many cases must be manually performed via a floppy diskette. In other cases, a customer may want to add the physical ROM on the adapter to obtain extended functionality from the peripheral device. From the system administrator""s perspective, this is a labor intensive and costly method of updating a system that has already been deployed into a production user environment.
For all of these reasons, it would be highly desirable to implement a standardized method and system for loading BIOS extensions during system BIOS execution. It would be further desirable if the implemented solution stored the BIOS extensions local to the system, such as in the system""s non-volatile mass storage sometimes referred to as a Direct Access Storage Device (DASD) or hard disk. It would be still further desirable if the BIOS extension code were stored in an area of the storage device that is generally inaccessible to the user and/or operating system to decrease the probability of an end user corrupting the BIOS extensions.
The problems identified above are in large part addressed by a system and method that define a standardized architecture for storing adapter card BIOS extensions on the system""s DASD and, more particularly, on a partition of the DASD that is generally inaccessible to the operating system and system user. The system may partition the system DASD into a user partition and a hidden partition. In this embodiment, the hidden partition is preferably inaccessible to the operating system thereby decreasing the probability of code stored therein being corrupted. In one embodiment, peripheral device BIOS extensions are stored in the hidden partition. The BIOS determines the identities of peripheral devices on the system and interrogates the hidden partition for BIOS extension files corresponding to each of the identified devices. If the hidden partition contains a BIOS extension file corresponding to an identified peripheral device, the file is verified for authenticity. If the verification completes successfully, at least a portion of the BIOS extension file is copied into shadow RAM and control is passed to it. In one embodiment, the DASD hidden partition is implemented according to the Protected Area Run Time Interface Extension Services (PARTIES) internal working document, or its successor document(s), of the American National Standards Institute (ANSI). In this embodiment, each BIOS extension file could be downloaded to the system""s DASD using a standards-based update process thereby eliminating the need for vendor/adapter specific update processes (i.e., file copy vs. proprietary update programs). In addition, the ability to download BIOS extension files directly to system DASD decreases the cost of the adapter by making obsolete the need for an option ROM.